When data is transmitted in a network, the amount of data transmitted can have an effect on the efficiency of the network which may in turn affect user experience. For example, if a large amount of data is transmitted through the network at a particular time, the network devices that route the data may be inundated, causing incoming data to be queued or buffered. As a result, it takes longer for users in the network to receive the data.
One conventional solution to this problem is to add more network devices to process the data. However, this solution can be expensive and cumbersome, requiring an investment in additional network devices and further requiring existing network devices to be reconfigured. Adding additional network devices may also be wasteful, because the problem of device inundation is most apparent during periods of high network utilization. During these periods, network usage can increase greatly over a short period of time, causing usage spikes. Additional network devices are helpful during the usage spikes, but during periods of normal network utilization the additional devices are unnecessary and may complicate the network architecture.
Another solution is to employ compression on the data transiting the network. Compression is a procedure that takes original data and encodes the data using fewer information units (for example, bits) than the original data. Compression is a form of network optimization. The term “optimization” typically includes elements and operations that improve the speed or efficiency of data transmission in the network, or allow data transmission to be accomplished with fewer resources. However, an “optimization” need not enable optimal or maximal data transmission. Compressing the data in the network reduces the amount of information transiting the network, and therefore reduces the number of devices needed to handle network traffic. The selection of an appropriate compression algorithm is key to network efficiency. For example, although the goal of compression is to reduce the number of information units used to encode data, in some circumstances a compression algorithm can actually increase the number of information units used to encode the data due to additional information stored along with the compressed data. Selecting the wrong compression algorithm therefore can undesirably generate more traffic.
Further, compressed data needs to be decompressed in order to be transformed back into its original format. This may necessitate the transmission of additional control messages through the network. Compressing data and decompressing data require processing resources. Thus, network devices must be capable of handling the processing of compression and decompression and the processing required to route messages.
Still further, compression algorithms consume other resources in network devices in addition to processing resources. Compression typically requires memory resources for storing information related to the compression algorithm and the data being compressed. If an inappropriate compression algorithm is selected, the memory footprint associated with the compression algorithm becomes quite large and consumes a great deal of the memory resources, or consumes expensive external disk or solid state storage.
Moreover, compression algorithms may not solve the problem of usage spikes. While compressing information may reduce the amount of network traffic, compression typically applies to all messages transiting the network. Therefore, compression may reduce the size of a usage spike versus non-compressed network traffic (in addition to reducing the amount of traffic outside of a spike), but conventional compression schemes are typically not good candidates for smoothing usage spikes. Because usage spikes still occur, additional devices may still be needed, even in a network employing compression.